package com.sxu.threadpool;

import java.util.concurrent.TimeUnit;

public class TestPool {
    public static void main(String[] args) {
        MyThreadPool threadPool = new MyThreadPool(2,1000, TimeUnit.MILLISECONDS,10,((queue, task) -> {
            // 死等
            queue.put(task);
            // 带超时时间的等待
//            queue.offer(task,1000,TimeUnit.MILLISECONDS);
            // 调用者放弃任务
//            System.out.println("放弃任务执行");
            // 调用者抛出异常
//            throw new RuntimeException("任务执行失败" + task);
            // 调用者自己执行任务
//            task.run();
        }));

//        for(int i=0;i<5;i++){
//            int j = i;
//            threadPool.execute(()->{
//                System.out.println(j);
//            });
//        }
        // 模拟任务队列满的情况
        for(int i=0;i<15;i++){
            int j = i;
            threadPool.execute(()->{
                try {
                    Thread.sleep(1000000L);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println(j);
            });
        }
    }
}
